package spec.zhangyuehua.$04.animal;

/**
 * Created by yue on 2017/10/19.
 * 抽象类
 * 1.抽象类不能实例化，只能被继承
 * 2.抽象类里可以定义抽象方法
 * 3.如果抽象类的子类不是抽象类的话，其子类必须重写抽象方法
 */
   public abstract class Animal {
    //成员属性
    private String name;
    private String food;
    private String area;
    //  自定义构造方法
    public Animal(String name,String food,String area){
        this.food=food;
        this.name=name;
        this.area=area;
    }
    //   抽象方法无函数体
    public abstract String findFood();
    /**
     * 抽象方法
     * 抽象方法只能 在抽象类里定义
     */
    //    常规方法
    public String eat(){
        return name+"吃"+food;
    }
    //   抽象方法
    public abstract String wholeLife();
    //               getter和setter(在成员属性为private时)

    public String getArea() {
        return area;
    }

    public void setArea(String area) {
        this.area = area;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getFood() {
        return food;
    }

    public void setFood(String food) {
        this.food = food;
    }

    //   默认构造方法
    public Animal(){
    }
}
